정말, 정말 오랜만에 블로그을 작성한다. 방학 때는 코테 강의 수강 및 GDSC Solution Challenge에 참가하느라 정신이 없었다.
하지만, 이또한 핑계일 뿐..10분이라도 투자해서 새롭게 배운 내용, 혹은 기존에 알던 내용을 더 나은 퀄리티로 정리했어야 했다.
중구난방으로 노션에 메모는 해뒀으니, 하나하나씩 기록을 해나갈 예정이다.
우선, 현재 나의 가장 뜨거운 감자인 오픈소스 기여
에 대해 적어보고 싶다.
GDG Devfest - Open Source Mentoring
때는 2023년 12월, 인천 송도에서 열린 DevFest 행사에 참여하여 김인제님의 오픈소스 기여
에 대한 발표를 들었다.
누구나 원하는 오픈소스에 첫 기여를 할 수 있도록 도와주는 스터디를 진행하고 있다는 사실을 알게 되었고, 해당 스터디의 새로운 멤버 모집을 2월달에 할 예정이라는 소식을 접했다.
오픈소스라는 것이 무엇이고, 기여를 한다는 것이 개발자로써 할 수 있는 대단한 업적이라고만 알고 있지, 실제로 어떤식으로 기여를 할 수 있는지에 대해서는 처음 접해봐서 굉장히 흥미롭게 발표를 들었고, 2월달에 스터디원 모집글이 뜨기만을 기다리고 있었다.
2월은 3월이 되었고, 드디어! GDG 송도 오픈채팅방에서 3월 스터디 모집글이 올라왔다.
모집글을 보자마자 거의 5분안에 지원서를 제출하였다. 오픈소스 기여에 대한 멘토링을 받을 수 있는 자리는 흔치 않다고 생각했기에, 더 간절했던 것 같다.
정말정말 운이 좋게 스터디 지원에 합격
하여, 나의 진심이 그대로 전해진 것 같아 매우 뿌듯했다.
Study Guidance
오픈소스 스터디 톡방에 초대된 후, 다음 일정을 공지받았다.
- 오늘: 첫 이슈 선정 가이드 읽기 https://medium.com/opensource-contributors/3ff09c9b6f83
- 화-수: 매일 저녁 10시까지 이슈 선정 딱 1시간 투자해서 해보고 2, 3개 할만한 이슈 골라서 공유하기 (리드가 저녁 10시에 골라주신 이슈가 진행할만한지 바로 확인해서 피드백 드립니다!)
- 이부분에서 시간을 많이 투자하실수록 제가 어디를 고쳐야할지 코드를 더 많이보고 자세한 도움드릴 수 있습니다!
- 목요일 저녁 9시~10시 30분: OT, 선정한 이슈 소개와 해결방법 함께 논의
- 토요일 저녁 8시~11시: PR 열고 서로 공유하기
현재는 이슈 선정단계에 있는 상태이다. 오늘은 첫 이슈 선정 가이드의 내용을 정리해보겠다.
Guide for contributing to opensource
인제님께서 꼼꼼하게 가이드를 작성해주신 덕분에, 편하게 가이드를 받을 수 있었다. 결국, 가장 중요한 점은 바로 이것이었다.
`적절한 이슈 선정하기`
오픈소스 기여를 처음 하실때 제가 가장 중요하게 생각하는건 “적절한 이슈 선정” 이다.
적절한 난이도의, 단기간에 해결 할 수 있는 말 그대로 지금 나에게 적절한 이슈를 고르는 것이 포인트다.
- 기여의 명확한 동기부여가 있는 오픈소스의 이슈 선정
- 이슈 안에서 해결해야할 목표, 제안하는 해결 방법과 예시 코드, 관련된 소스 코드들, 테스트 코드 등 재현 방법 이 포함되어 있을 것
해당 두 가지 기준을 말고도 3가지 팁도 알려주셨다.
- (팁 1) 댓글이 20개 이상 or 0개 인건 피한다 (아직 방향을 논의중일 확률이 높다)
- (팁 2) 이슈 내용이 명확해야 하고, 이슈 댓글로 메인테이너가 방향을 확인해준 이슈 일수록 좋다
- (팁 3) 메인테이너가 작성한 이슈라면 댓글이 없어도 좋다! (메인테이너는 Member 뱃지가 달려있습니다)
핵심은 "해당 오픈소스의 메인테이너가 이슈 내용을 확인했고 진행해도 괜찮다고 분류 해놓은 이슈 중에서 선정 할 것”
이다.
코드 구현 및 PR오픈
- 이미 머지된 PR 참고
- 수정하고 있는 소스코드의 히스토리를 타고가서 머지된 커밋들을 참고
- 이미 코드리뷰 후 머지된 답안지를 참고하기
해당 가이드는 기여할 이슈를 확정한 다음 고려해볼 사항들이다. 이미 머지된 사항들을 보니, 확실히 오픈소스 내에서 코드의 어느 부분을 봐야할지가 좀 더 명확해지는 것 같다.
My opensource - Elaticsearch
내가 선정한 오픈소스는 바로 Elasticsearch
이다.
작년 7월부터 12월까지, 비상교육 인턴에서 가장 깊게 다뤄본 오픈소스이기도 하고, 취준생인 입장에서 가장 어필할 만한 경험을 만들어주기도 했기 때문이다.
해당 오픈소스 스터디를 통해, ES 역량을 더욱 강화하여 이번에 진행할 한이음 RAG 기반 챗봇 구현 프로젝트에서 강화된 역량을 바탕으로 나를 어필할 수 있는 무기를 꼭 하나 더 만들고 싶다.
Finding proper issues
Elasticsearch는 친절하게 기여 초심자분들용 이슈들을 미리 정리해둬서, 우선 해당 이슈들을 먼저 읽어보기로 하였다.
하지만, 내가 생각했던 것 보다 할만한 이슈들은 이미 선점당한 상태였고, 무엇보다 구체적인 해결방법과 예시코드가 초심자가 보기에는 눈에 잘 안들어왔다.
인제님께서는 텔레파시 능력이 있으신건지, 제 마음을 꿰뚫어보시고 바로 이슈에 대한 팁을 카톡방에 전해주셨다.
피드백은 다음과 같다.
@신성준 님, ES는 이슈가 엄청 많네요ㅎ
밑의 라벨들 참고해주시고, 오히려 ES는 ES-client 쪽이 훨씬 기여하기 쉬울거 같은데 이쪽도 한번 이슈 봐주세요!
- https://github.com/elastic/elasticsearch/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%2
- https://github.com/elastic/elasticsearch/issues/94028
- https://github.com/elastic/elasticsearch-java/issues?q=is%3Aopen+is%3Aissue+label%3A%3Eapi-spec
정말 신기했던점은 할만한 es 이슈를 하나 선정했었는데, 그게 딱 인제님께서 추천해주신 이슈이기도 하다. (소름)
인제님의 가이드대로, ES-Client의 이슈도 봐보기로 하였다.
인제님의 가이드 - ES 보단 ES Client를 먼저
일라스틱 서치의 클라이언트 레포인 elasticsearch-java
에서도 기여할 만한 이슈들을 찾아봤다.
역시 갓인제님…기존 elasticsearch에서의 이슈보다 난이도가 좀 더 낮아서 초심자인 나에게 안성맞춤인 이슈를 금방 찾을 수 있었다.
https://github.com/elastic/elasticsearch/issues/94028 https://github.com/elastic/elasticsearch-java/issues/718
es와 es-java 레포에서 여러 이슈들을 찾아보았고 es-java 에서 3개, es에서 1개를 선정 완료하였다. 다음 회고글에서는 해당 이슈들을 선정한 이유와 인제님의 피드백을 정리해보겠다.